/**********************************************************

     文件名称: input_cashier.c

     项目功能: 

     作者: 佳奇

     邮箱: 1374804492@qq.com 

     创建时间: Wed 24 Aug 2022 09:37:17 PM CST

**********************************************************/


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "sup_mgr.h"
#include "md5.h"


//	清空输入缓冲区
void c_buffer(void)
{
	while(getchar() != '\n');
}


//	判断员工工号是否重复
//	重复返回 1 不重复返回 0
int deter(cas_list* demo , int data)
{
	demo = demo->next;

	while(demo != NULL)
	{
		if(demo->data->user == data)
			return 1;

		demo = demo->next;
	}

	return 0;
}


//	添加收银员信息
void input_cas(cas_list* demo, admin* s1)
{
	while(1)
	{
		system("clear");
		cas_list* p = (cas_list*)malloc(sizeof(cas_list));
		cas* data = (cas*)malloc(sizeof(cas));

		if((NULL == data) || (NULL == p))
		{
			perror("malloc error");
			return;
		}

		printf("\n请按照如下提示依次输入收银员信息：\n\n");
	
		while(1)
		{
			while(1)
			{
				printf("工号：");
				if(!scanf("%d", &data->user))
				{
					c_buffer();
					fprintf(stderr, "格式输入错误，请重新输入\n");
				}
				else break;
			}
			
			//	判断工号是否已经存在
			if(deter(demo, data->user))
			{
				c_buffer();
				fprintf(stderr, "\n工号已经存在！请重新输入\n");
			}
			else	break;
		}


		c_buffer();
		printf("\n密码：");
		scanf("%32s", data->pwd);
		strcpy(data->pwd, md5_encode(data->pwd, strlen(data->pwd)));

		c_buffer();
		printf("\n身份证号：");
		scanf("%18s", data->id);
		c_buffer();
		printf("\n姓名：");
		scanf("%30s", data->name);
		c_buffer();
		printf("\n性别(0 为女 1 为男)：");
		scanf("%c", &data->sex);
		c_buffer();
		printf("\n电话号码：");
		scanf("%11s", data->phone);
		c_buffer();
		printf("\n住址：");
		scanf("%90s", data->add);
		c_buffer();

		//   状态 记录该用户是否首次登录系统   0 为首次登录状态 1 为非首次登录状态   
		data->state = 0;

		//	 身份记录 0 为管理员用户 1 为普通用户
		data->idendity = 1;
		
		p->data = data;
		p->next = demo->next;
		demo->next = p;

		//	将添加好的这位员工信息的密码信息 写入密码链表中
		input(s1, input_pwd(data->name, data->pwd, data->state, data->idendity, data->user));

		printf("\n收银员 %s 信息添加成功！", data->name);
		printf("\n**************************\n");
		
		printf("是否继续添加:(y/n)?");
		if(getchar() != 'y') 
		{
			c_buffer();
			return;
		}
	}
}


//	生成新的密码链表节点 并返回该节点指针
admin* input_pwd(const char* data1, const char* data2, int s1, int s2, int s3)
{
	admin* p = (admin*) malloc (sizeof(admin));
	cry* demo = (cry*) malloc (sizeof(cry));

	if(NULL == p)
	{
		perror("malloc error");
		return NULL;
	}

	strcpy(demo->user_name, data1);
	strcpy(demo->user_pwd, data2);
	demo->state = s1;
	demo->idenditr = s2;
	demo->user_id = s3;

	p->data = demo;
	p->next = NULL;

	return p;
}


//	将节点插入至链表中
void input(admin* demo1, admin* demo2)
{
	demo2->next = demo1->next;
	demo1->next = demo2;
}












